var core = require('./src/core.js');
var advance = require('./src/advance.js');
var request = require('./src/request');
var utils = require('./src/utils');
var event = require('./src/event');
var task = require('./src/task')
/**
 * 需要提炼成KS3实例可访问的全局变量 todo
 */
 var defaultConfig = {
    AK: '',
    SK: '', 
    protocol: '', //是否为内网
    region: '',
    bucket: '',
    forcePathStyle: false, //是否使用二级域名
    domain: false, //是否使用自定义域名
    chunkSize: 5*1024*1024, // 分块上传的最小单位 每个分块要求为5MB≤PartSize＜500MB之间
    retryTimes: 2, // 分块上传重试次数
    parallelLimit: 10, // 分块上传并发个数
    fileParallelLimit: 3, // 同一个实例下上传的文件并发数
    progressInterval: 1000, // 回调时间间隔
    timeout: 0, // 超时时长 默认不限制超时时长 单位：毫秒
    securityToken: '' //从STS服务获取的临时身份凭证（SecurityToken）
}


var KS3 = function(config){
    this.config = Object.assign({}, defaultConfig, config);
    utils.each(core.methods, function (fn, apiName) {
        KS3.prototype[apiName] = core.methods[apiName];
    });

    event.init(this)
    task.init(this)
}

advance.init(KS3, task);

KS3.request = request
KS3.utils = utils
module.exports = KS3;